package org.jsola.hr.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.jsola.core.dto.BaseDTO;

import javax.validation.constraints.NotNull;

import static org.jsola.core.example.BaseExample.E_ID;
import static org.jsola.core.example.BaseExample.M_ID_NOT_NULL;
import static org.jsola.core.example.BaseExample.N_ID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_APPID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_BATCH_ID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_DETAIL_ID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_DETAIL_STATUS;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_FAIL_REASON;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_INITIATE_TIME;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_OPENID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_SP_MCHID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_TRANSFER_AMOUNT;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_TRANSFER_REMARK;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_UPDATE_TIME;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_USERNAME;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.E_VX_BATCH_ID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_APPID_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_BATCH_ID_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_DETAIL_ID_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_DETAIL_STATUS_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_FAIL_REASON_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_INITIATE_TIME_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_OPENID_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_SP_MCHID_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_TRANSFER_REMARK_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_UPDATE_TIME_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_USERNAME_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.M_VX_BATCH_ID_MAX;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_APPID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_BATCH_ID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_DETAIL_ID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_DETAIL_STATUS;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_FAIL_REASON;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_INITIATE_TIME;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_OPENID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_SP_MCHID;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_TRANSFER_AMOUNT;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_TRANSFER_REMARK;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_UPDATE_TIME;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_USERNAME;
import static org.jsola.hr.example.TransferAccountsVxDetailExample.N_VX_BATCH_ID;

/**
 * 转账明细(微信)
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "修改【转账明细(微信)】的参数")
@Data
public class TransferAccountsVxDetailUpdateDTO extends BaseDTO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID, required = true)
    @NotNull(message = M_ID_NOT_NULL)
    private String id;

    @ApiModelProperty(notes = N_SP_MCHID, example = E_SP_MCHID)
    @Length(max = 32, message = M_SP_MCHID_MAX)
    private String spMchid;

    @ApiModelProperty(notes = N_BATCH_ID, example = E_BATCH_ID)
    @Length(max = 100, message = M_BATCH_ID_MAX)
    private String batchId;

    @ApiModelProperty(notes = N_VX_BATCH_ID, example = E_VX_BATCH_ID)
    @Length(max = 32, message = M_VX_BATCH_ID_MAX)
    private String vxBatchId;

    @ApiModelProperty(notes = N_APPID, example = E_APPID)
    @Length(max = 32, message = M_APPID_MAX)
    private String appid;

    @ApiModelProperty(notes = N_DETAIL_ID, example = E_DETAIL_ID)
    @Length(max = 64, message = M_DETAIL_ID_MAX)
    private String detailId;

    @ApiModelProperty(notes = N_DETAIL_STATUS, example = E_DETAIL_STATUS)
    @Length(max = 32, message = M_DETAIL_STATUS_MAX)
    private String detailStatus;

    @ApiModelProperty(notes = N_TRANSFER_AMOUNT, example = E_TRANSFER_AMOUNT)
    private Integer transferAmount;

    @ApiModelProperty(notes = N_TRANSFER_REMARK, example = E_TRANSFER_REMARK)
    @Length(max = 32, message = M_TRANSFER_REMARK_MAX)
    private String transferRemark;

    @ApiModelProperty(notes = N_FAIL_REASON, example = E_FAIL_REASON)
    @Length(max = 64, message = M_FAIL_REASON_MAX)
    private String failReason;

    @ApiModelProperty(notes = N_OPENID, example = E_OPENID)
    @Length(max = 64, message = M_OPENID_MAX)
    private String openid;

    @ApiModelProperty(notes = N_USERNAME, example = E_USERNAME)
    @Length(max = 1024, message = M_USERNAME_MAX)
    private String username;

    @ApiModelProperty(notes = N_INITIATE_TIME, example = E_INITIATE_TIME)
    @Length(max = 32, message = M_INITIATE_TIME_MAX)
    private String initiateTime;

    @ApiModelProperty(notes = N_UPDATE_TIME, example = E_UPDATE_TIME)
    @Length(max = 32, message = M_UPDATE_TIME_MAX)
    private String updateTime;


}

